<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
  <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Universal AST (UAST) &mdash; MetronomeStatic 0.1.0 documentation</title>
      <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" />
      <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" />

  
  <!--[if lt IE 9]>
    <script src="../_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script src="../_static/jquery.js?v=5d32c60e"></script>
        <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=2389946f"></script>
        <script src="../_static/doctools.js?v=888ff710"></script>
        <script src="../_static/sphinx_highlight.js?v=4825356b"></script>
    <script src="../_static/js/theme.js"></script>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="API Reference" href="../api/_index.html" />
    <link rel="prev" title="Clang Utils" href="clang_utils.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >

          
          
          <a href="../index.html" class="icon icon-home">
            MetronomeStatic
              <img src="../_static/sky-cloud.png" class="logo" alt="Logo"/>
          </a>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../installation.html">Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../installation.html#user-installation">User Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../installation.html#developer-installation">Developer Installation</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../introduction.html">Introduction</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="_index.html">Tutorial</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="clang_utils.html">Clang Utils</a><ul>
<li class="toctree-l3"><a class="reference internal" href="clang_utils.html#loading-source-code-printing-ast">Loading Source Code &amp; Printing AST</a></li>
<li class="toctree-l3"><a class="reference internal" href="clang_utils.html#querying-the-ast-interactively">Querying The AST Interactively</a></li>
<li class="toctree-l3"><a class="reference internal" href="clang_utils.html#querying-code-attributes">Querying Code Attributes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="clang_utils.html#queries-for-variables">Queries for Variables</a></li>
<li class="toctree-l4"><a class="reference internal" href="clang_utils.html#parsing-expressions">Parsing Expressions</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Universal AST (UAST)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../api/_index.html">API Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../api/melodie_generator.html">MelodieGenerator</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/melodie_generator.html#members-list">Members List</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../api/melodie_generator.html#MelodieFuncFlow.functional.MelodieFrozenGenerator"><code class="docutils literal notranslate"><span class="pre">MelodieFrozenGenerator</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/melodie_generator.html#MelodieFuncFlow.functional.MelodieGenerator"><code class="docutils literal notranslate"><span class="pre">MelodieGenerator</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/common_utils.html">CommonUtils</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/common_utils.html#tips-before-reading">Tips Before Reading</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/common_utils.html#members-list">Members List</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.MelodieFrozenGenerator"><code class="docutils literal notranslate"><span class="pre">MelodieFrozenGenerator</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.MelodieGenerator"><code class="docutils literal notranslate"><span class="pre">MelodieGenerator</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.abspath_from_current_file"><code class="docutils literal notranslate"><span class="pre">abspath_from_current_file()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.compose"><code class="docutils literal notranslate"><span class="pre">compose()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.file_to_dataurl"><code class="docutils literal notranslate"><span class="pre">file_to_dataurl()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/common_utils.html#MetronomeStatic.utils.parse_dataurl"><code class="docutils literal notranslate"><span class="pre">parse_dataurl()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/clang_utils.html">ClangUtils</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/clang_utils.html#tips-before-reading">Tips Before Reading</a></li>
<li class="toctree-l3"><a class="reference internal" href="../api/clang_utils.html#members-list">Members List</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.ClassDefModel"><code class="docutils literal notranslate"><span class="pre">ClassDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.DefModel"><code class="docutils literal notranslate"><span class="pre">DefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.FieldDefModel"><code class="docutils literal notranslate"><span class="pre">FieldDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.FunctionDefModel"><code class="docutils literal notranslate"><span class="pre">FunctionDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.ParamDefModel"><code class="docutils literal notranslate"><span class="pre">ParamDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.StructDefModel"><code class="docutils literal notranslate"><span class="pre">StructDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.TraversalContext"><code class="docutils literal notranslate"><span class="pre">TraversalContext</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.TypeDefModel"><code class="docutils literal notranslate"><span class="pre">TypeDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.TypeWrapper"><code class="docutils literal notranslate"><span class="pre">TypeWrapper</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.UnaryOpPos"><code class="docutils literal notranslate"><span class="pre">UnaryOpPos</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.UnionDefModel"><code class="docutils literal notranslate"><span class="pre">UnionDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.VarDefModel"><code class="docutils literal notranslate"><span class="pre">VarDefModel</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.all_globals"><code class="docutils literal notranslate"><span class="pre">all_globals()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.beautified_print_ast"><code class="docutils literal notranslate"><span class="pre">beautified_print_ast()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.build_call_graph"><code class="docutils literal notranslate"><span class="pre">build_call_graph()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.extract_ast"><code class="docutils literal notranslate"><span class="pre">extract_ast()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_compound_assignment_operator"><code class="docutils literal notranslate"><span class="pre">get_compound_assignment_operator()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_func_decl"><code class="docutils literal notranslate"><span class="pre">get_func_decl()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_func_decl_all"><code class="docutils literal notranslate"><span class="pre">get_func_decl_all()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_global_ref_names"><code class="docutils literal notranslate"><span class="pre">get_global_ref_names()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_global_refs"><code class="docutils literal notranslate"><span class="pre">get_global_refs()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_local_var_defs"><code class="docutils literal notranslate"><span class="pre">get_local_var_defs()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_param_decls"><code class="docutils literal notranslate"><span class="pre">get_param_decls()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.get_var_refs"><code class="docutils literal notranslate"><span class="pre">get_var_refs()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.is_function_definition"><code class="docutils literal notranslate"><span class="pre">is_function_definition()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.iter_ast"><code class="docutils literal notranslate"><span class="pre">iter_ast()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.iter_ast_from_file"><code class="docutils literal notranslate"><span class="pre">iter_ast_from_file()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.iter_files"><code class="docutils literal notranslate"><span class="pre">iter_files()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.parse_file"><code class="docutils literal notranslate"><span class="pre">parse_file()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.program_model_unparse"><code class="docutils literal notranslate"><span class="pre">program_model_unparse()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.split_binary_operator"><code class="docutils literal notranslate"><span class="pre">split_binary_operator()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.split_compound_assignment"><code class="docutils literal notranslate"><span class="pre">split_compound_assignment()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.split_for_loop_conditions"><code class="docutils literal notranslate"><span class="pre">split_for_loop_conditions()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.split_unary_operator"><code class="docutils literal notranslate"><span class="pre">split_unary_operator()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.traversal"><code class="docutils literal notranslate"><span class="pre">traversal()</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/clang_utils.html#MetronomeStatic.clang_utils.code_attributes.traversal_with_callback"><code class="docutils literal notranslate"><span class="pre">traversal_with_callback()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../api/universal_ast.html">Universal AST</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../api/universal_ast.html#members-list">Members List</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Additive"><code class="docutils literal notranslate"><span class="pre">Additive</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.And"><code class="docutils literal notranslate"><span class="pre">And</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Annotation"><code class="docutils literal notranslate"><span class="pre">Annotation</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.AnnotationDeclaration"><code class="docutils literal notranslate"><span class="pre">AnnotationDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.AnnotationMember"><code class="docutils literal notranslate"><span class="pre">AnnotationMember</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.AnnotationMethodDeclaration"><code class="docutils literal notranslate"><span class="pre">AnnotationMethodDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ArrayAccess"><code class="docutils literal notranslate"><span class="pre">ArrayAccess</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ArrayCreation"><code class="docutils literal notranslate"><span class="pre">ArrayCreation</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ArrayInitializer"><code class="docutils literal notranslate"><span class="pre">ArrayInitializer</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Assert"><code class="docutils literal notranslate"><span class="pre">Assert</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Assignment"><code class="docutils literal notranslate"><span class="pre">Assignment</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.BinaryExpression"><code class="docutils literal notranslate"><span class="pre">BinaryExpression</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Block"><code class="docutils literal notranslate"><span class="pre">Block</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Break"><code class="docutils literal notranslate"><span class="pre">Break</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Cast"><code class="docutils literal notranslate"><span class="pre">Cast</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Catch"><code class="docutils literal notranslate"><span class="pre">Catch</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ClassDeclaration"><code class="docutils literal notranslate"><span class="pre">ClassDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ClassInitializer"><code class="docutils literal notranslate"><span class="pre">ClassInitializer</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ClassLiteral"><code class="docutils literal notranslate"><span class="pre">ClassLiteral</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.CompilationUnit"><code class="docutils literal notranslate"><span class="pre">CompilationUnit</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Conditional"><code class="docutils literal notranslate"><span class="pre">Conditional</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ConditionalAnd"><code class="docutils literal notranslate"><span class="pre">ConditionalAnd</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ConditionalOr"><code class="docutils literal notranslate"><span class="pre">ConditionalOr</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ConstructorDeclaration"><code class="docutils literal notranslate"><span class="pre">ConstructorDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ConstructorInvocation"><code class="docutils literal notranslate"><span class="pre">ConstructorInvocation</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Continue"><code class="docutils literal notranslate"><span class="pre">Continue</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.DefaultStatement"><code class="docutils literal notranslate"><span class="pre">DefaultStatement</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.DereferenceExpr"><code class="docutils literal notranslate"><span class="pre">DereferenceExpr</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.DoWhile"><code class="docutils literal notranslate"><span class="pre">DoWhile</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Empty"><code class="docutils literal notranslate"><span class="pre">Empty</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.EmptyDeclaration"><code class="docutils literal notranslate"><span class="pre">EmptyDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.EnumConstant"><code class="docutils literal notranslate"><span class="pre">EnumConstant</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.EnumDeclaration"><code class="docutils literal notranslate"><span class="pre">EnumDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Equality"><code class="docutils literal notranslate"><span class="pre">Equality</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Expression"><code class="docutils literal notranslate"><span class="pre">Expression</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ExpressionStatement"><code class="docutils literal notranslate"><span class="pre">ExpressionStatement</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.FieldAccess"><code class="docutils literal notranslate"><span class="pre">FieldAccess</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.FieldDeclaration"><code class="docutils literal notranslate"><span class="pre">FieldDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.For"><code class="docutils literal notranslate"><span class="pre">For</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ForEach"><code class="docutils literal notranslate"><span class="pre">ForEach</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.FormalParameter"><code class="docutils literal notranslate"><span class="pre">FormalParameter</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.FuncCall"><code class="docutils literal notranslate"><span class="pre">FuncCall</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.GoToStatement"><code class="docutils literal notranslate"><span class="pre">GoToStatement</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.IfThenElse"><code class="docutils literal notranslate"><span class="pre">IfThenElse</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ImportDeclaration"><code class="docutils literal notranslate"><span class="pre">ImportDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.InstanceCreation"><code class="docutils literal notranslate"><span class="pre">InstanceCreation</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.InstanceOf"><code class="docutils literal notranslate"><span class="pre">InstanceOf</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.InterfaceDeclaration"><code class="docutils literal notranslate"><span class="pre">InterfaceDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Label"><code class="docutils literal notranslate"><span class="pre">Label</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Literal"><code class="docutils literal notranslate"><span class="pre">Literal</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.MethodDeclaration"><code class="docutils literal notranslate"><span class="pre">MethodDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Multiplicative"><code class="docutils literal notranslate"><span class="pre">Multiplicative</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Name"><code class="docutils literal notranslate"><span class="pre">Name</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Or"><code class="docutils literal notranslate"><span class="pre">Or</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.PackageDeclaration"><code class="docutils literal notranslate"><span class="pre">PackageDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.ReferenceExpr"><code class="docutils literal notranslate"><span class="pre">ReferenceExpr</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Relational"><code class="docutils literal notranslate"><span class="pre">Relational</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Resource"><code class="docutils literal notranslate"><span class="pre">Resource</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Return"><code class="docutils literal notranslate"><span class="pre">Return</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Shift"><code class="docutils literal notranslate"><span class="pre">Shift</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.SourceElement"><code class="docutils literal notranslate"><span class="pre">SourceElement</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Statement"><code class="docutils literal notranslate"><span class="pre">Statement</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Switch"><code class="docutils literal notranslate"><span class="pre">Switch</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.SwitchCase"><code class="docutils literal notranslate"><span class="pre">SwitchCase</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Synchronized"><code class="docutils literal notranslate"><span class="pre">Synchronized</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Throw"><code class="docutils literal notranslate"><span class="pre">Throw</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Throws"><code class="docutils literal notranslate"><span class="pre">Throws</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Try"><code class="docutils literal notranslate"><span class="pre">Try</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Type"><code class="docutils literal notranslate"><span class="pre">Type</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.TypeParameter"><code class="docutils literal notranslate"><span class="pre">TypeParameter</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Unary"><code class="docutils literal notranslate"><span class="pre">Unary</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Variable"><code class="docutils literal notranslate"><span class="pre">Variable</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.VariableDeclaration"><code class="docutils literal notranslate"><span class="pre">VariableDeclaration</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.VariableDeclarator"><code class="docutils literal notranslate"><span class="pre">VariableDeclarator</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.While"><code class="docutils literal notranslate"><span class="pre">While</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Wildcard"><code class="docutils literal notranslate"><span class="pre">Wildcard</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.WildcardBound"><code class="docutils literal notranslate"><span class="pre">WildcardBound</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="../api/universal_ast.html#MetronomeStatic.universal_ast.universal_ast_nodes.Xor"><code class="docutils literal notranslate"><span class="pre">Xor</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../changelog.html">Change Log</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../changelog.html#start-may-10-2023">Start (May. 10, 2023)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../contribution.html">Contribution</a></li>
<li class="toctree-l1"><a class="reference internal" href="../about.html">About</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="../index.html">MetronomeStatic</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
          <li class="breadcrumb-item"><a href="_index.html">Tutorial</a></li>
      <li class="breadcrumb-item active">Universal AST (UAST)</li>
      <li class="wy-breadcrumbs-aside">
            <a href="../_sources/tutorial/universal_ast.rst.txt" rel="nofollow"> View page source</a>
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <section id="universal-ast-uast">
<h1>Universal AST (UAST)<a class="headerlink" href="#universal-ast-uast" title="Permalink to this heading"></a></h1>
<p>UAST is a universal representation of ASTs across different languages. The UAST from
MetronomeStatic comes from the project <a class="reference external" href="https://github.com/musiKk/plyj">PLYJ</a>, and modified for
representing C/C++ ASTs.</p>
<p>The API document of UAST is
<a class="reference internal" href="../api/universal_ast.html"><span class="doc">HERE</span></a>.</p>
<p>Here is a C file, <code class="docutils literal notranslate"><span class="pre">assets/uast-demo.c</span></code>:</p>
<div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">paramA</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">paramB</span><span class="p">)</span>
<span class="linenos">2</span><span class="p">{</span>
<span class="linenos">3</span><span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">paramA</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span>
<span class="linenos">4</span><span class="w">    </span><span class="p">{</span>
<span class="linenos">5</span><span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="mi">-1</span><span class="p">;</span>
<span class="linenos">6</span><span class="w">    </span><span class="p">}</span>
<span class="linenos">7</span><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="n">paramA</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">paramB</span><span class="p">;</span>
<span class="linenos">8</span><span class="p">}</span>
</pre></div>
</div>
<p>To convert this file to UAST, just code like <code class="docutils literal notranslate"><span class="pre">get_uast.py</span></code>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="kn">import</span> <span class="nn">json</span>
<span class="linenos"> 2</span><span class="kn">import</span> <span class="nn">sys</span>
<span class="linenos"> 3</span>
<span class="linenos"> 4</span><span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">&quot;../../..&quot;</span><span class="p">)</span>
<span class="linenos"> 5</span>
<span class="linenos"> 6</span><span class="kn">from</span> <span class="nn">MetronomeStatic.clang_utils</span> <span class="kn">import</span> <span class="o">*</span>
<span class="linenos"> 7</span><span class="kn">from</span> <span class="nn">MetronomeStatic</span> <span class="kn">import</span> <span class="o">*</span>
<span class="linenos"> 8</span>
<span class="linenos"> 9</span><span class="n">path</span> <span class="o">=</span> <span class="n">abspath_from_current_file</span><span class="p">(</span><span class="s2">&quot;assets/uast-demo.c&quot;</span><span class="p">,</span> <span class="vm">__file__</span><span class="p">)</span>
<span class="linenos">10</span>
<span class="linenos">11</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">12</span><span class="sd">Code above is critical for running this example,</span>
<span class="linenos">13</span><span class="sd">and not necessary when using in an interactive environment (IPython/Jupyter).</span>
<span class="linenos">14</span>
<span class="linenos">15</span><span class="sd">↓↓ JUST FOCUS ON THE FOLLOWING CODE! ↓↓</span>
<span class="linenos">16</span><span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">17</span>
<span class="linenos">18</span>
<span class="linenos">19</span><span class="n">evaluator</span> <span class="o">=</span> <span class="n">ClangASTConverter</span><span class="p">()</span>
<span class="linenos">20</span><span class="n">cursor</span> <span class="o">=</span> <span class="n">get_func_decl</span><span class="p">(</span>
<span class="linenos">21</span>    <span class="n">parse_file</span><span class="p">(</span>
<span class="linenos">22</span>        <span class="n">path</span><span class="p">,</span>
<span class="linenos">23</span>    <span class="p">)</span><span class="o">.</span><span class="n">cursor</span><span class="p">,</span>
<span class="linenos">24</span>    <span class="s2">&quot;main&quot;</span><span class="p">,</span>
<span class="linenos">25</span><span class="p">)</span>
<span class="linenos">26</span><span class="k">assert</span> <span class="n">cursor</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span>
<span class="linenos">27</span>
<span class="linenos">28</span><span class="n">ret</span> <span class="o">=</span> <span class="n">evaluator</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">cursor</span><span class="p">)</span>
<span class="linenos">29</span>
<span class="linenos">30</span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;./outputs/dumped-ast.json&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="linenos">31</span>    <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">ret</span><span class="o">.</span><span class="n">to_dict</span><span class="p">(),</span> <span class="n">f</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">ensure_ascii</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</pre></div>
</div>
<p>The generated JSON representation of UAST is shown below:</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="linenos"> 1</span><span class="p">{</span>
<span class="linenos"> 2</span><span class="w">  </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;MethodDeclaration&quot;</span><span class="p">,</span>
<span class="linenos"> 3</span><span class="w">  </span><span class="nt">&quot;name&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;main&quot;</span><span class="p">,</span>
<span class="linenos"> 4</span><span class="w">  </span><span class="nt">&quot;modifiers&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
<span class="linenos"> 5</span><span class="w">  </span><span class="nt">&quot;type_parameters&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
<span class="linenos"> 6</span><span class="w">  </span><span class="nt">&quot;parameters&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="linenos"> 7</span><span class="w">    </span><span class="kc">null</span><span class="p">,</span>
<span class="linenos"> 8</span><span class="w">    </span><span class="kc">null</span>
<span class="linenos"> 9</span><span class="w">  </span><span class="p">],</span>
<span class="linenos">10</span><span class="w">  </span><span class="nt">&quot;return_type&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;NotImplemented&quot;</span><span class="p">,</span>
<span class="linenos">11</span><span class="w">  </span><span class="nt">&quot;body&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">12</span><span class="w">    </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Block&quot;</span><span class="p">,</span>
<span class="linenos">13</span><span class="w">    </span><span class="nt">&quot;statements&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="linenos">14</span><span class="w">      </span><span class="p">{</span>
<span class="linenos">15</span><span class="w">        </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;IfThenElse&quot;</span><span class="p">,</span>
<span class="linenos">16</span><span class="w">        </span><span class="nt">&quot;predicate&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">17</span><span class="w">          </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;BinaryExpression&quot;</span><span class="p">,</span>
<span class="linenos">18</span><span class="w">          </span><span class="nt">&quot;operator&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;&lt;&quot;</span><span class="p">,</span>
<span class="linenos">19</span><span class="w">          </span><span class="nt">&quot;lhs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">20</span><span class="w">            </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Name&quot;</span><span class="p">,</span>
<span class="linenos">21</span><span class="w">            </span><span class="nt">&quot;value&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;paramA&quot;</span>
<span class="linenos">22</span><span class="w">          </span><span class="p">},</span>
<span class="linenos">23</span><span class="w">          </span><span class="nt">&quot;rhs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">24</span><span class="w">            </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Literal&quot;</span><span class="p">,</span>
<span class="linenos">25</span><span class="w">            </span><span class="nt">&quot;value&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span>
<span class="linenos">26</span><span class="w">          </span><span class="p">}</span>
<span class="linenos">27</span><span class="w">        </span><span class="p">},</span>
<span class="linenos">28</span><span class="w">        </span><span class="nt">&quot;if_true&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">29</span><span class="w">          </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Block&quot;</span><span class="p">,</span>
<span class="linenos">30</span><span class="w">          </span><span class="nt">&quot;statements&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="linenos">31</span><span class="w">            </span><span class="p">{</span>
<span class="linenos">32</span><span class="w">              </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Return&quot;</span><span class="p">,</span>
<span class="linenos">33</span><span class="w">              </span><span class="nt">&quot;result&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">34</span><span class="w">                </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Unary&quot;</span><span class="p">,</span>
<span class="linenos">35</span><span class="w">                </span><span class="nt">&quot;sign&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;p-&quot;</span><span class="p">,</span>
<span class="linenos">36</span><span class="w">                </span><span class="nt">&quot;expression&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">37</span><span class="w">                  </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Literal&quot;</span><span class="p">,</span>
<span class="linenos">38</span><span class="w">                  </span><span class="nt">&quot;value&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span>
<span class="linenos">39</span><span class="w">                </span><span class="p">}</span>
<span class="linenos">40</span><span class="w">              </span><span class="p">}</span>
<span class="linenos">41</span><span class="w">            </span><span class="p">}</span>
<span class="linenos">42</span><span class="w">          </span><span class="p">]</span>
<span class="linenos">43</span><span class="w">        </span><span class="p">},</span>
<span class="linenos">44</span><span class="w">        </span><span class="nt">&quot;if_false&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
<span class="linenos">45</span><span class="w">      </span><span class="p">},</span>
<span class="linenos">46</span><span class="w">      </span><span class="p">{</span>
<span class="linenos">47</span><span class="w">        </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Return&quot;</span><span class="p">,</span>
<span class="linenos">48</span><span class="w">        </span><span class="nt">&quot;result&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">49</span><span class="w">          </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;BinaryExpression&quot;</span><span class="p">,</span>
<span class="linenos">50</span><span class="w">          </span><span class="nt">&quot;operator&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;+&quot;</span><span class="p">,</span>
<span class="linenos">51</span><span class="w">          </span><span class="nt">&quot;lhs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">52</span><span class="w">            </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Name&quot;</span><span class="p">,</span>
<span class="linenos">53</span><span class="w">            </span><span class="nt">&quot;value&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;paramA&quot;</span>
<span class="linenos">54</span><span class="w">          </span><span class="p">},</span>
<span class="linenos">55</span><span class="w">          </span><span class="nt">&quot;rhs&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="linenos">56</span><span class="w">            </span><span class="nt">&quot;_cls&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Name&quot;</span><span class="p">,</span>
<span class="linenos">57</span><span class="w">            </span><span class="nt">&quot;value&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;paramB&quot;</span>
<span class="linenos">58</span><span class="w">          </span><span class="p">}</span>
<span class="linenos">59</span><span class="w">        </span><span class="p">}</span>
<span class="linenos">60</span><span class="w">      </span><span class="p">}</span>
<span class="linenos">61</span><span class="w">    </span><span class="p">]</span>
<span class="linenos">62</span><span class="w">  </span><span class="p">},</span>
<span class="linenos">63</span><span class="w">  </span><span class="nt">&quot;abstract&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
<span class="linenos">64</span><span class="w">  </span><span class="nt">&quot;extended_dims&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
<span class="linenos">65</span><span class="w">  </span><span class="nt">&quot;throws&quot;</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
<span class="linenos">66</span><span class="p">}</span>
</pre></div>
</div>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="clang_utils.html" class="btn btn-neutral float-left" title="Clang Utils" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="../api/_index.html" class="btn btn-neutral float-right" title="API Reference" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; Copyright 2022-2023, SkyGroup.</p>
  </div>

  Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
    provided by <a href="https://readthedocs.org">Read the Docs</a>.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>